const app = getApp()

import { loginExit } from "../../utils/http.js"
import { throttle } from '../../utils/throttle.js'
import { HiddenCall } from '../../request/api'
import { testPhone } from '../../utils/method.js'
const request = new HiddenCall
import tab_index from '../../mixins/tab_index.js'
Page({
  /**
  *  我的页
  * - @author           王磊
  * - @date             2018-07-07
  * dialSize             有效拨打次数
  * allSize               动画拨打总数
  * isAbort             退出登录
  * isModifyPhone 修改手机号
  */
  mixins: [tab_index],
  data: {
    dialSize: 0,
    allSize: 0,
    isAbort: false,
    isModifyPhone: false,
    count: 0, // 设置 计数器 初始为0
    countTimer: null // 设置 定时器 初始为null
  },
  onHide() {
    /**
     * 解决点击退出按钮出现弹框时跳到别的页面再返回时弹框不消失问题
     * author   赵美阳
     * date   2019-04-12
     */
    this.setData({ isAbort: false })
  },
  onShow() {
    // 获取用户信息
    this.getInfo()
  },
  /**
   * 获取用户信息
   * author wl
   */
  getInfo: function () {
    // 调用用户获取接口
    request.getUserInfo().then(res => {
      if (res) {
        // 更新用户信息渲染
        this.setData({
          account: res.account,
          telephone: res.telephone,
          dialSize: res.callNumber,
          todayTime: res.totalCallDurationTime ? res.totalCallDurationTime : '0秒',
          directNumber: res.directNumber,
          allSize: res.totalCallNumber,
          invalidCallNumber: res.invalidCallNumber,
          userModer: res
        })
        
        this.drawProgressbg()
        // 绘制半圆
        if (res.totalCallNumber !== 0 && res.callNumber!==0) {
          this.drawNum()
          this.countInterval(res.totalCallNumber, res.callNumber)
        }
        return request.lengthNumberInfo(res.telephone)
      }
    }).then((res) => {
      //设置长号和短号
      if(res){
        let shortNumer = res.result[0].virtualNumberInfoList[0].virtualNumber
        let longNumer = res.result[0].virtualNumberInfoList[0].sonVirtualNumber
        this.setData({
          shortNumer,
          longNumer
        })
      }
    })
  },
  /**
   * 绘制半圆动画
   * author wl
   */
  drawNum() {
    let circleIntervalo = null
    let num = 0
    let that = this
    // 时间函数
    circleIntervalo = setInterval(function () {
      // 初始值小于有效拨打测试++
      if (num <= that.data.allSize) {
        num++
        that.setData({ remainingNum: num-1})
      } else {
        // 停止时间函数
        clearInterval(circleIntervalo)
        circleIntervalo = null
      }
    }, 50)
  },
  /**
   * 退出登录弹窗
   * author wl
   */
  dropOut() {
    this.setData({ isAbort: true })
  },
  /**
   * 确认退出吗
   * author wl
   */
  confirm: throttle(function () {
    // 调用退出接口进入首页
    loginExit().then(() => {
      // 延时10000毫秒进行跳转
      setTimeout(() => {
        wx.redirectTo({
          url: '../login/index'
        })
      }, 200)
    })
    // 关闭退出弹窗
    this.setData({ isAbort: false })
  }, 2000),
  /**
   * 取消退出账号
   * author wl
   */
  cancel() {
    this.setData({
      isAbort: false,
      isModfiyPhone: false,
      modifyPhone: ''
    })
  },
  /**
   * 进入收藏夹列表
   * author wl
   */
  enterFavorite: throttle(function () {
    wx.navigateTo({
      url: '../favorite_list/index',
    })
  }, 2000),
  /**
   * 进入通讯录列表
   * author wl
   */
  enterMailing: throttle(function () {
    wx.navigateTo({
      url: '../mailing_list/index',
    })
  }, 2000),
  /**
   * 修改手机号弹窗开启
   * author wl
   */
  modfiyPhone() {
    this.setData({ isModfiyPhone: true })
  },
  /**
   * 获取修改的手机号
   * author wl
   */
  getModifyPhone(e) {
    this.setData({ modifyPhone: e.detail.value })
  },
  /**
   * 确定修改手机号
   * author wl
   */
  phoneConfirm() {
    let phone = testPhone(this.data.modifyPhone)
    if (phone) {
      request.modifyPhone({ mobile: this.data.modifyPhone }).then((res) => {
        wx.showToast({
          title: '手机号修改成功',
          icon: 'none'
        })
        this.setData({ isModfiyPhone: false, modifyPhone: '' })
      })
    } else {
      wx.showToast({
        title: '手机号格式错误',
        icon: 'none'
      })
    }
  },
  /**
   * 进入修改密码页面
   * author wl
   */
  modfiyPassword() {
    wx.navigateTo({
      url: '../modfiy_password/index',
    })
  },
  /**
   * 进入版本历史页
   * author wl
   */
  enterEdition() {
    wx.navigateTo({
      url: '../edition/index',
    })
  },
  enterTariff () {
    wx.navigateTo({
      url: '../tariff/index?hide=hide',
    })
  },
  feedBack() {
    wx.navigateTo({
      url: '../feed_back/index',
    })
  },
  evaluation () {
    wx.navigateTo({
      url: `../evaluation/index?name=${this.data.userModer.telephone}`,
    })
  },
  drawProgressbg: function () {
    // 使用 wx.createContext 获取绘图上下文 context
    var ctx = wx.createCanvasContext('canvasProgressbg')
    ctx.setLineWidth(10);// 设置圆环的宽度
    ctx.setStrokeStyle(this.data.allSize ===0?'#ccc':'#5ce1c6'); // 设置圆环的颜色
    ctx.setLineCap('round') // 设置圆环端点的形状
    ctx.beginPath();//开始一个新的路径
    ctx.arc(75, 75, 65, 0, 2 * Math.PI, false)
    //设置一个原点(110,110)，半径为100的圆的路径到当前路径
    ctx.stroke()//对当前路径进行描边
    ctx.draw()
  },
  drawCircle: function (step) {
    var context = wx.createCanvasContext('canvasProgress');
    // 设置渐变
    context.setStrokeStyle('#10aa8e');

    context.setLineWidth(10);

    context.setLineCap('round')
    context.beginPath();
    // 参数step 为绘制的圆环周长，从0到2为一周 。 -Math.PI / 2 将起始角设在12点钟位置 ，结束角 通过改变 step 的值确定
    context.arc(75, 75, 65, -Math.PI / 2 + 0.1, step * Math.PI - Math.PI / 2 + 0.1, false)
    context.stroke()
    context.draw()
  },
  countInterval: function (total, callNumber) {
    // 设置倒计时 定时器 每100毫秒执行一次，计数器count+1 ,耗时6秒绘一圈
    this.countTimer = setInterval(() => {
      if (this.data.count <= callNumber) {
        /* 绘制彩色圆环进度条  
        注意此处 传参 step 取值范围是0到2，
        所以 计数器 最大值 60 对应 2 做处理，计数器count=60的时候step=2
        */
        this.drawCircle(this.data.count / (total / 2))
        this.data.count++;
      } else {
        clearInterval(this.countTimer);
      }
    }, 50)
  },
  myCatchTouch () {
    return
  }
})